// api/index.js 此文件作用
// 统一管理整个项目用到的网络请求接口
// 每个方法对应一个接口和功能
import request from '@/utils/request.js' // 引入自定义的请求对象

// 以API结尾的方法都是网络请求方法(内部都是ajax请求)
// ajax请求是异步代码-在未来请求回来才会触发一个函数
// Promise来管理异步代码(request方法原地返回一个Promise对象)
// 总结: 每次调用API结尾的方法, 都会得到一个Promise对象

/** **************************用户************************************** */
// 用户_登录
export const loginAPI = function (data) {
  return request({
    url: '/mp/v1_0/authorizations',
    method: 'POST',
    data
  }) // 这里会发起真正的网络请求
}

// 用户_获取个人信息
export const userInfoAPI = () => {
  return request({
    url: '/mp/v1_0/user/profile',
    method: 'GET'
    // token作用: 登录后换回来的你的身份标识(每个用户每次都不一样)
    // 以后的接口中, 请求头里把这个值传给后台, 后台字符串解析开, 识别出你是谁了返回你的信息
  })
}

// 用户_更新信息
export const updateInfoAPI = data => request({
  url: '/mp/v1_0/user/profile',
  method: 'PATCH',
  data
})

// 用户_更换头像
export const upAvatarAPI = data => request({
  url: '/mp/v1_0/user/photo',
  method: 'PATCH',
  data
})

/** **************************文章**************************** */
// 文章_获取频道名
export const channelListAPI = () => request({
  url: '/mp/v1_0/channels',
  method: 'GET'
})

// 文章_发布
// params是在url?后面传参
// data是请求体(body)体里传参
export const articleAddAPI = (params1, data1) => request({
  url: '/mp/v1_0/articles',
  method: 'POST',
  params: params1, // 外部要传入参数对象(被axios发给后台)
  data: data1
})

// 文章_列表
export const articleListAPI = params => request({
  url: '/mp/v1_0/articles',
  method: 'GET',
  params
})

// 文章_某个详情
export const articleByIdAPI = id => request({
  url: '/mp/v1_0/articles/' + id,
  method: 'GET'
})

// 文章_更新某个
export const articleUpdateAPI = (id, params, body) => request({
  url: '/mp/v1_0/articles/' + id, // 路径传参
  method: 'PUT',
  params, // ?后面
  data: body // 请求体
})

// 文章_删除
export const articleDeleteAPI = id => request({
  url: '/mp/v1_0/articles/' + id,
  method: 'DELETE'
})

/** ****************素材相关********************************* */
// 素材库_获取图片
export const userImageListAPI = params1 => request({
  url: '/mp/v1_0/user/images',
  method: 'GET',
  params: params1 // 在url后面拼接参数和值, 对应{}参数对象里的key和value, 自动拼接到url?key=value格式
})

// 素材库_收藏/取消收藏图片
export const collectedImgAPI = (id, data) => request({
  url: '/mp/v1_0/user/images/' + id,
  method: 'PUT',
  data
})

// 素材库_删除图片
export const delUserImgAPI = id => request({
  url: '/mp/v1_0/user/images/' + id, // 把要删除图片的id带上
  method: 'DELETE'
})

/** ***************************评论相关********************************* */
export const commentListAPI = params => request({
  url: '/mp/v1_0/articles',
  method: 'GET',
  params: {
    response_type: 'comment', // 不需要动态自己能定的-就直接写死在这里
    ...params // 外面可能还要传入{page:1, per_page:10}  (... 扩展运算符, 把后面的结构打散)
  }
})

// ... 单独出现是 打散
// ... 如果出现在函数形参上, 剩余参数运算符(reset), 负责收集剩余的所有参数的值

// 开启/关闭 文章的评论功能
export const openOrCloseCommentAPI = (params, data) => request({
  url: '/mp/v1_0/comments/status',
  method: 'PUT',
  params,
  data
})

/** *****************************粉丝管理********************* */
export const fansListAPI = () => request({
  url: '/mp/v1_0/followers',
  method: 'GET'
})
